package com.launch.timer;


import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 *   Timer定时器
 *   后台线程调度TimeTask {@link TimerTask}
 */
public interface Timer {

    /**
     * 调度指定的延迟任务
     * @param timerTask
     * @param delay
     * @param timeUnit
     * @return 根据指定的任务返回
     * @throws IllegalStateException 如果time定时器已经{@linkplain #stop()} 将抛出非法状态异常
     */
    TimeOut newTimeOut(TimerTask timerTask , long delay , TimeUnit timeUnit) ;

    /**
     * 释放timer定时器资源，取消所有没有被执行的任务
     * @return
     */
    Set<TimeOut> stop() ;

}
